home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / SMAK124.ARJ / SMAK.DOC < prev    next >
Text File  |  1992-04-12  |  13KB  |  292 lines

  1.  
  2.                                  SMAK
  3.                                  
  4.  
  5. Did you ever try to use one of the big-name MAKE programs, only to find 
  6. yourself facing a steep slope at the front of the learning curve?  I 
  7. know the feeling, so I decided to "make" it easier.
  8.  
  9. Kiss your compile and link headaches goodbye with SMAK, the Simple MAKE 
  10. utility from Martin Systems.
  11.  
  12. So much for the commercial.  Here's the beef.
  13.  
  14. Simple MAKE automates the compile/link process, but keeps it simple.  It 
  15. reads a short, well-defined script which is stored in your source code 
  16. and builds the executable file without further intervention.
  17.  
  18. SMAK is shareware and may be distributed freely as long as the additional 
  19. document files are distributed with it.  Registration is only $25 and 
  20. provides registered owners with the following benefits:
  21.  
  22.     1.  An enhanced version of SMAK, plus free upgrade privileges for
  23.         one year.  Current enhancements include:
  24.           Greater capacity (up to 128 list files).
  25.           Option to check all include files for changes when
  26.             determining a conditional compile.
  27.           Compile and link errors stop the make process.
  28.           (Other enhancements will surely follow.)
  29.     2.  QuickBasic source code for SMAK.
  30.     3.  A $15 discount on Basic Building Blocks (normally $35), our
  31.         library of assembly language routines and QuickBasic subprograms.
  32.         Some BBB routines were crucial in creating SMAK.  They are written
  33.         to be smaller and faster than other high-priced libraries (which I
  34.         cut my teeth on), while providing the same or greater functionality.
  35.         See the file BBB.DOC describing Basic Building Blocks.
  36.  
  37. SMAK is primarily designed to work with Microsoft QuickBasic 2.0 and
  38. above, but it can also make PDS, assembler, and C programs.  It is small
  39. and fast, taking only 12K of disk space and reserving only 26K of RAM when
  40. loaded and running the compiler or linker.  It is also Desqview aware and
  41. will "behave" in a DV window despite using some direct screen writes.
  42.  
  43.  
  44. Syntax for running SMAK is:  [path\]SMAK source[.ext] [options]
  45.  
  46.              where:  source is the source file name that contains
  47.                      the main source code module and the make script
  48.  
  49. If no extension is given for file name, .BAS is assumed.  Options are:
  50.  
  51.              /F    force compile and link of all source files
  52.              /2    pass compiler instructions in Microsoft C format
  53.              /M    have linker generate a MAP file
  54.              /E    assume all source/object files exist somewhere
  55.              /C    compile only
  56.              /L    link only
  57.  
  58.  
  59. The script that SMAK reads may be anywhere in the source file (or in its
  60. own separate file), though near the beginning of the file is best for
  61. fastest processing.  Storing the script in the source file saves disk
  62. space by not creating a separate make file, and also documents all files
  63. needed to create the final EXE file within the main source code module.
  64.  
  65. All lines of the script are commented off with apostrophes.  It looks like
  66. this:
  67.  
  68.  1  'begin make                         'identifies start of script
  69.  2  '  c:\qb45\bc                       'name of compiler program
  70.  3  '  c:\qb45\link /nod /noe           'name of linker with link options
  71.  4  '  begin BAS                        'start of source file list
  72.  5  '    d:\make\smak /o                'main source file & compile options
  73.  6  '    d:\bbb\strip /o                'other source file & compile options
  74.  7  '    d:\bbb\parse /o                'other source file & compile options
  75.  8  '  begin OBJ                        'start of object file list
  76.  9  '    d:\bbb\FileInfo                'object file name
  77. 10  '    d:\bbb\CheckKB                 'many object files may be
  78. 11  '    c:\pdq\_noread                 '  listed here, just like for
  79. 12  '    c:\pdq\_noerror                '  for the BAS source files
  80. 13  '    c:\pdq\_noval                  '(this is a PDQ stub file)
  81. 14  '  begin LIB                        'start of link library file list
  82. 15  '    c:\pdq\pdq                     '  many LIB files may follow
  83. 16  'end make                           'identifies end of script
  84.  
  85.  
  86. Line numbers are added here only as an aide to the detailed explanation
  87. that follows.  Each line would actually start with ' in the source
  88. file.  Any line can contain trailing comments that also begin with an
  89. apostrophe, which SMAK ignores.  SMAK does not change the case of any
  90. line so that case-sensitive parameters may be used (as in C).
  91.  
  92. Line 1 simply identifies the beginning of the MAKE script.
  93.  
  94. Line 2 contains the compiler program name that you would normally need to
  95. type to run your compiler.  It's a good idea to include its drive and
  96. path spec, so DOS won't have to spend time searching through the
  97. directories in your PATH statement.  You may leave the compiler program
  98. name blank, if desired, to perform linking only.
  99.  
  100. Line 3 contains the linker program name that you would normally need to
  101. type to run your linker.  Again, include its drive and path for fastest
  102. loading.  You may leave the linker program name blank, if desired, to
  103. perform compiling only.  Any link options to be used during linking should
  104. follow the linker program name, separated from it by a space.
  105.  
  106. Line 4 identifies the start of the list of source files.  Often there is
  107. only one, but you can have many source files (one per line) in the list.
  108. Each one will be compiled, and their respective object files will be linked 
  109. into the final EXE file.  The BAS specifies the default file extension for 
  110. any files in the list which do not have file extensions.  You can specify 
  111. any other default file extension if desired, like PDS, ASM, C, or PDQ.
  112.  
  113. Line 5 contains the name of the main source code file.  Again, include its 
  114. drive and path for fastest processing and to know where its object file 
  115. will end up residing.  The main source code module should be first in the 
  116. list, since the resulting EXE file will have the same name as the first 
  117. source file.  Compiler options can follow the source code file name, and 
  118. can be different for each source code file.
  119.  
  120. Lines 6 and 7 are additional source modules needed to make the example 
  121. program SMAK.EXE.
  122.  
  123. Line 8 identifies the start of the list of object files.  Often there 
  124. will be none, since all object files created by compiling the source code 
  125. files are automatically passed to the linker.  You can have many object 
  126. files (one per line) in the list.  Each one will be linked into the 
  127. final EXE file.  The OBJ specifies the default file extension for any
  128. files in the list which do not have file extensions, and may be changed.
  129.  
  130. Library files may be included in the object file list, but be aware that 
  131. every routine in that library will be linked into the final EXE file, 
  132. whether it is called or not.  Library files should usually go in the 
  133. library file list.  See the explanation for line 14.
  134.  
  135. Lines 9 through 13 are additional object module file names which were 
  136. NOT created by compiling the source code files listed under "begin BAS" 
  137. but are referenced or needed for a successful link.
  138.  
  139. Line 14 identifies the start of the list of library files.  Often there 
  140. will be none, since the default library file name (like BRUN45.LIB or 
  141. BCOM45.LIB if you used QB's /O compile switch) is usually passed to the
  142. linker in the main object file.  If the correct default LIB file is not 
  143. in your path, or its path is not found in the LIB environment variable, 
  144. you may need to include its complete file spec here.  You can have many 
  145. library files (one per line) in the list.  Library files in this list are 
  146. searched for any missing routines needed to complete the link, and only 
  147. called routines are linked into the final EXE file.   The LIB specifies
  148. the default file extension for any files in the list which do not have
  149. file extensions, and may be changed.
  150.  
  151. Line 15 contains a link library needed in this example to make the
  152. SMAK.EXE program.
  153.  
  154. Line 16 identifies the end of the script.
  155.  
  156.  
  157. The example below shows a simple script needed to create the file
  158. HELLO.EXE from the source code file HELLO.BAS.
  159.  
  160. '===================== Begin program HELLO.BAS ====================
  161.  
  162.   'begin make                          'identifies start of script
  163.   '  c:\qb45\bc                        'name of compiler program
  164.   '  c:\qb45\link                      'name of link program
  165.   '  begin BAS                         'start of source file list
  166.   '    c:\bbb\hello /o                 'main source file & compile options
  167.   'end make                            'identifies end of script
  168.  
  169.  
  170.   print "  HELLO!  (compiled and linked with SMAK, written in QuickBasic 4.5)"
  171.   end
  172.  
  173. '====================== End program HELLO.BAS =====================
  174.  
  175.  
  176. SMAK works with other languages besides QuickBasic, like assembler and C.
  177. See the files SMAK_C.DOC and SMAK_ASM.DOC for more information.
  178.  
  179.  
  180.  
  181. Notes about path specs:
  182.  
  183. SMAK does its work quicker and more accurately if you use complete path
  184. specs for all files in the make directives.  SMAK verifies that each
  185. source or object file exists.  If any files are missing, SMAK will
  186. identify them and terminate before compiling or linking.  Each file's
  187. date/time stamp is also noted for conditional compiling and linking.
  188.  
  189. SMAK checks for files without path specs in the current directory only.
  190. SMAK will not search your PATH or LIB directories for a file.  If you
  191. rely on your compiler or linker to find certain files in those
  192. directories, and you do not specify their paths in the make directives,
  193. you will need to use the /E command line switch when you invoke SMAK.
  194.  
  195. Another advantage of using path specs with your file names is that you 
  196. can run SMAK while in any directory, against a source file in any 
  197. directory, and still have all the files produced by compiling and linking 
  198. end up where they are supposed to be.  I use a simple batch file in my 
  199. path containing F:\MAKE\SMAK %1 %2 %3 %4 to make my programs.
  200.  
  201.  
  202. Notes on command line parameters:
  203.  
  204. The /E parameter tells SMAK to assume that any source or object file it 
  205. cannot find exists anyway.  The compiler and linker are then responsible 
  206. for checking that the file exists.  Conditional compilation of that file 
  207. also becomes the responsibility of the compiler, as well.
  208.  
  209. The /2 parameter passes the compile commands to the compiler (or assembler) 
  210. in the following format:  CompilerName SourceName [options]
  211. The default format is:    CompilerName SourceName, ObjectName [options];
  212.  
  213. The /C parameter tells SMAK to compile only.  No linking occurs.  Note 
  214. that which modules are compiled is still conditional.  Use /C/F to do an
  215. unconditional compile only.
  216.  
  217. The /L parameter tells SMAK to link only.  No compiling occurs.  Note 
  218. that linking is still conditional.  Use /L/F to do an unconditional link
  219. only.
  220.  
  221.  
  222. Miscellaneous notes:
  223.  
  224. Maximum number of file names in the combined source, object, and library 
  225. lists is 32.  The actual number in each list may vary, as long as the 
  226. sum does not exceed 32.  If you need greater capacity, combine object 
  227. files into one or more libraries, or register to receive the enhanced 
  228. version which allows up to 128 files in the combined lists.
  229.  
  230. If you have a list of library files, you must also always have a list of 
  231. object files, even if it is an empty list.  The SMAK program always 
  232. considers the second "begin" to mark the start of the object file list.
  233.  
  234.  
  235.  
  236.  
  237.                         D  I  S  C  L  A  I  M  E  R
  238.  
  239.  
  240. By using this software, you agree to hold harmless Martin Systems for any
  241. resulting loss or damage.  There are no warranties expressed or implied.
  242.  
  243.  
  244.  
  245. ==============================================================================
  246.  
  247.  
  248.  
  249.                            REGISTRATION FORM
  250.  
  251.  
  252.  
  253.     NAME  ______________________________________________
  254.  
  255.  
  256.  ADDRESS  ______________________________________________
  257.  
  258.  
  259.     CITY  _____________________________    STATE  ______    ZIP  _________
  260.  
  261.  
  262.    PHONE  (_______)____________________
  263.  
  264.  
  265.  
  266.  
  267.                                              QTY                   NET
  268.  
  269.     SMAK registration only                 ______  @ $25 each =   ______
  270.  
  271.     Basic Building Blocks only             ______  @ $35 each =   ______
  272.  
  273.     Basic Building Blocks and SMAK (!)     ______  @ $45 each =   ______
  274.  
  275.  
  276.  
  277.          (Prices include US Mail shipping)           TOTAL        ______
  278.  
  279.  
  280.  
  281.    Diskette type:        [  ] 360K        [  ] 720K
  282.  
  283.  
  284.          Send to:  Martin Systems
  285.                    120 Fence Post Court
  286.                    Fountain, CO  80817
  287.  
  288.                    (719) 382-8216  BBS
  289.  
  290.  
  291. ==============================================================================
  292.